446103ff74d3598843ea22b1ff0b221635dc9b36,src/java/org/apache/cassandra/tools/NodeCmd.java,NodeCmd,printRing,#PrintStream#,86

Before Change


        outs.print(String.format("%-7s", "Status"));
        outs.print(String.format("%-8s", "State"));
        outs.print(String.format("%-16s", "Load"));
        outs.print(String.format("%-44s", "Token"));
        outs.println();
        
        // show pre-wrap token twice so you can always read a node's range as
        // (previous line token, current line token]
        if (sortedTokens.size() > 1)
            outs.println(String.format("%-14s%-11s%-14s%-43s", "", "", "", sortedTokens.get(sortedTokens.size() - 1)));

        for (Token token : sortedTokens) {
            String primaryEndpoint = tokenToEndpoint.get(token);
            outs.print(String.format("%-16s", primaryEndpoint));

            String status =
                    liveNodes.contains(primaryEndpoint) ? "Up" :
                    deadNodes.contains(primaryEndpoint) ? "Down" :
                    "?";
            outs.print(String.format("%-7s", status));

            String state =
                    joiningNodes.contains(primaryEndpoint) ? "Joining" :
                    leavingNodes.contains(primaryEndpoint) ? "Leaving" :
                    "Normal";
            outs.print(String.format("%-8s", state));

            outs.print(String.format("%-16s", loadMap.containsKey(primaryEndpoint) ? loadMap.get(primaryEndpoint) : "?"));

            outs.print(String.format("%-44s", token));

            outs.println();
        }
    }

After Change


     * 
     * @param outs the stream to write to
     */
    public void printRing(PrintStream outs)
    {
        Map<Token, String> tokenToEndpoint = probe.getTokenToEndpointMap();
        List<Token> sortedTokens = new ArrayList<Token>(tokenToEndpoint.keySet());
        Collections.sort(sortedTokens);

        Set<String> liveNodes = probe.getLiveNodes();
        Set<String> deadNodes = probe.getUnreachableNodes();
        Set<String> joiningNodes = probe.getJoiningNodes();
        Set<String> leavingNodes = probe.getLeavingNodes();
        Map<String, String> loadMap = probe.getLoadMap();

        outs.printf("%-16s%-7s%-8s%-16s%-44s\n", "Address", "Status", "State", "Load", "Token");
        // show pre-wrap token twice so you can always read a node's range as
        // (previous line token, current line token]
        if (sortedTokens.size() > 1)
            outs.printf("%-14s%-11s%-14s%-43s\n", "", "", "", sortedTokens.get(sortedTokens.size() - 1));

        for (Token token : sortedTokens)
        {
            String primaryEndpoint = tokenToEndpoint.get(token);
            String status = liveNodes.contains(primaryEndpoint)
                            ? "Up"
                            : deadNodes.contains(primaryEndpoint) ? "Down" : "?";
            String state = joiningNodes.contains(primaryEndpoint)
                           ? "Joining"
                           : leavingNodes.contains(primaryEndpoint) ? "Leaving" : "Normal";
            String load = loadMap.containsKey(primaryEndpoint) ? loadMap.get(primaryEndpoint) : "?";
            outs.printf("%-16s%-7s%-8s%-16s%-44s\n", primaryEndpoint, status, state, load, token);
        }
    }